﻿package com.seven.util;


import java.util.ArrayList;
import java.util.List;

/**
 * 分页组件： 内存分页 SQL分页
 * 
 * 
 * 总记录数 共多少页 总页数 当前页号 每页条数 *
 */
public class PageBean<T> {
	private int rowPerPage; // 每页显示记录数 10--2 11--3
	private int totalRows; // 总记录数
	private int curPageNo; // 当前页号
	private int totalPageCount; // 总页数

	private List<T> pageList=new ArrayList(); // 当前页要显示的记录

	/**
	 * @param list
	 *            ：所有的记录
	 * @param curPage
	 *            :当前页号参数 从请求传过来
	 */
	public void page(List<T> list, String curPage,String rowPerPage) {
		try{
			this.rowPerPage = Integer.parseInt(rowPerPage);
		}catch(Exception e){
			this.rowPerPage=5;
		}
		if (list == null) {
			return;
		}
		this.totalRows = list.size();

		// 防止用户输入非数字
		try {
			this.curPageNo = Integer.parseInt(curPage);
		} catch (Exception e) {
			this.curPageNo = 1;
		}
		//rowPerPage赋值
		if (this.rowPerPage<=0) {
			this.rowPerPage=5;
		}
		// 计算总页数
		if (this.totalRows % this.rowPerPage == 0) {
			this.totalPageCount = this.totalRows / this.rowPerPage;
		} else {
			this.totalPageCount = this.totalRows / this.rowPerPage + 1;
		}

		// 处理非法页号
		if (this.curPageNo <= 0) {
			this.curPageNo = 1;
		}
		if (this.curPageNo > this.totalPageCount) {
			this.curPageNo = this.totalPageCount;
		}

		// 从总记录列表中 提取当前页中的记录数据 "abcde".substring(1,3)

		// 开始位置
		int startIndex = (this.curPageNo - 1) * this.rowPerPage;
		int endIndex = startIndex + this.rowPerPage;

		// 防止最后一页越界
		if (endIndex >= this.totalRows) {
			endIndex = this.totalRows;
		}

		//从所有的记录中截取出当前页的记录
		this.pageList = list.subList(startIndex, endIndex);
	}

	public int getRowPerPage() {
		return rowPerPage;
	}

	public void setRowPerPage(int rowPerPage) {
		this.rowPerPage = rowPerPage;
	}

	public int getTotalRows() {
		return totalRows;
	}

	public void setTotalRows(int totalRows) {
		this.totalRows = totalRows;
	}

	public int getCurPageNo() {
		return curPageNo;
	}

	public void setCurPageNo(int curPageNo) {
		this.curPageNo = curPageNo;
	}

	public int getTotalPageCount() {
		return totalPageCount;
	}

	public void setTotalPageCount(int totalPageCount) {
		this.totalPageCount = totalPageCount;
	}

	public List<T> getPageList() {
		return pageList;
	}

	public void setPageList(List<T> pageList) {
		this.pageList = pageList;
	}

}
